// 在 TypeScript 中，可以使用 class 关键字定义一个类。类可以包含属性、构造函数和方法。
namespace Study3TS {
  class Person {
    name: string;
    age: number;

    constructor(name: string, age: number) {
      this.name = name;
      this.age = age;
    }
    greet() {
      console.log(`Hello,my name is ${this.name} and I am ${this.age} years old.`);
    }
  }
  const person = new Person('Alice', 30);
  person.greet();
  console.log('--------------');


  // + public: 公有成员，默认修饰符，成员可以被类的内外访问。
  // + private: 私有成员，只能在类的内部访问。
  // + protected: 受保护成员，可以在类及其子类中访问。
  class Employee {
    public name: string;
    private salary: number;
    protected department: string;// 受保护属性 ：岗位
    constructor(name: string, salary: number, department: string) {
      this.name = name;
      this.salary = salary;
      this.department = department;
    }
    getSalary() {
      return this.salary; // 私有属性只能在类的内部访问
    }
  }
  const employee = new Employee('张伟', 47849, 'IT')
  console.log(employee.name);
  console.log(employee.getSalary());

  // 定义一个动物类
  // class Animal{
  //   // 声明和赋值合并
  //   constructor(private name: string) { }
  //   move(distanceInMeters: number) {
  //     console.log(`${this.name} moved ${distanceInMeters}m.`);
  //   }
  // }

  // 定义动物类
  class Animal{
    private _age: number = 0;
    constructor(public name: string) { }
    // Getter方法：获取动物的年龄
    get age(): number{
      console.log(`获取${this.name}的年龄`);
      return this._age;   
    }

  }














}

